#pragma classflags(64)
#pragma namespace("\\\\.\\ROOT")

Instance of __NAMESPACE
{
  Name = "MicrosoftPointOfService";
};
#pragma namespace("\\\\.\\ROOT\\MicrosoftPointOfService")

Instance of __Win32Provider as $PosProv
{
  Name = "MicrosoftPointOfService";
  ClsId = "{AB0DB418-1417-4241-8EBB-688DD874409B}";
  HostingModel = "LocalServiceHost";
};

Instance of __InstanceProviderRegistration
{
  Provider = $PosProv;
  SupportsGet = TRUE;
  SupportsPut = TRUE;
  SupportsDelete = TRUE;
  SupportsEnumeration = TRUE;
  QuerySupportLevels = {"WQL:UnarySelect"};
};

Instance of __MethodProviderRegistration
{
  Provider = $PosProv;
};

[Dynamic,Provider("MicrosoftPointOfService") : ToInstance,SupportsGet,SuppportsPut] 
class POSDevice
{
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Path;
  [read : ToSubclass] string HardwareDescription;
  [read : ToSubclass] boolean IsPlugNPlay;
  [read : ToSubclass] boolean IsLegacy;
  [read : ToSubclass,write : ToSubclass] boolean Enabled;
  [read : ToSubclass,write : ToSubclass] boolean Default;
  [Implemented] void AddName([in] string Name);
  [Implemented] void DeleteName([in] string Name);
  [Implemented] void SetPath([in] string Path);
  [Implemented] void AddProperty([in] string Name,[in] string Value);
  [Implemented] void DeleteProperty([in] string Name);
};

[Dynamic,Provider("MicrosoftPointOfService") : ToInstance,SupportsGet,SuppportsPut] 
class LogicalDevice
{
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Path;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Name;
};

[Dynamic,Provider("MicrosoftPointOfService") : ToInstance,SupportsGet] 
class DeviceProperty
{
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Path;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Name;
  [read : ToSubclass] string Value;
};

[Dynamic,Provider("MicrosoftPointOfService") : ToInstance,SupportsGet] 
class ServiceObject
{
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Name;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass] string Type;
  [read : ToSubclass] string UposVersion;
  [read : ToSubclass] string Path;
  [read : ToSubclass] string Version;
  [read : ToSubclass] uint32 Compatibility;
  [read : ToSubclass] string Description;
  [read : ToSubclass] boolean IsPlugNPlay;
  [read : ToSubclass] boolean IsLegacy;
  [Implemented] void AddDevice([in] string Path);
  [Implemented] void DeleteDevice([in] string Path);
};
#pragma classflags(64)
#pragma namespace("\\\\.\\ROOT\\MicrosoftPointOfService")
instance of __namespace{ name="ms_409";};
#pragma namespace("\\\\.\\ROOT\\MicrosoftPointOfService\\ms_409")

[Description("The POSDevice Class represents a single physical POS device.  The class provides variables and methods that are needed to manage that physical device.") : Amended ToSubclass,AMENDMENT, LOCALE(0x409)] 
class POSDevice
{
  [key : ToInstance ToSubclass DisableOverride,Description("The POS device type or category. For example, Scanner, Printer, etc.") : Amended ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,Description("The name of the service object for this physical device.") : Amended ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,Description("The hardware path of a Device. For Plug and Play devices, this path comes from the Plug and Play engine. For non-Plug and Play devices, it is provided via the AddDevice method of ServiceObject. For devices using legacy (OPOS) service objects, this may be blank.") : Amended ToSubclass] string Path;
  [Description("The device description, of the logical device, returned from the registry and used by the Plug and Play engine. This may be blank for devices using legacy (OPOS) service objects.") : Amended ToSubclass] string HardwareDescription;
  [Description("If TRUE, the device is a Plug and Play device.") : Amended ToSubclass] boolean IsPlugNPlay;
  [Description("If TRUE, the device is using a legacy (OPOS) service object. If FALSE, the device is using a POS for.NET service object.") : Amended ToSubclass] boolean IsLegacy;
  [Description("If TRUE, enable the device. If FALSE, disable the device.") : Amended ToSubclass] boolean Enabled;
  [Description("If TRUE, the device is the default in a POS Device category.") : Amended ToSubclass] boolean Default;
  [Description("Adds a logical name for the device.") : Amended ToSubclass] void AddName([in,Description("Name is the name of the logical device to add. The name must be unique within a device class (type). ") : Amended ToSubclass] string Name);
  [Description("Deletes the logical name from the device.") : Amended ToSubclass] void DeleteName([in,Description("Name is the name of the logical device to delete.") : Amended ToSubclass] string Name);
  [Description("Sets the device path of a non-PnP device.") : Amended ToSubclass] void SetPath([in,Description("The path of the physical device. (i.e. 'COM2').") : Amended ToSubclass] string Path);
  [Description("Adds a property (a name/value pair) to this device.") : Amended ToSubclass] void AddProperty([in,Description("Name is the name of the property ") : Amended ToSubclass] string Name,[in,Description("Value is the value of the property. ") : Amended ToSubclass] string Value);
  [Description("Deletes a property from this device.") : Amended ToSubclass] void DeleteProperty([in,Description("Name is the name of the property to be deleted.") : Amended ToSubclass] string Name);
};

[Description("The Logical Device Class represents a single logical device associted with a physical device.  The class provides variables and methods that are needed to manage that logical device.") : Amended ToSubclass,AMENDMENT, LOCALE(0x409)] 
class LogicalDevice
{
  [key : ToInstance ToSubclass DisableOverride,Description("The POS device category that the logical device belongs to.") : Amended ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,Description("The name of the service object.") : Amended ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,Description("The path of the physical device.") : Amended ToSubclass] string Path;
  [key : ToInstance ToSubclass DisableOverride,Description("The name for the logical device") : Amended ToSubclass] string Name;
};

[Description("The DeviceProperty class represents a name/value pair. There may be multiple DeviceProperties associated with a PosDevice.") : Amended ToSubclass,AMENDMENT, LOCALE(0x409)] 
class DeviceProperty
{
  [key : ToInstance ToSubclass DisableOverride,Description("The POS device category.") : Amended ToSubclass] string Type;
  [key : ToInstance ToSubclass DisableOverride,Description("The name of the service object.") : Amended ToSubclass] string SoName;
  [key : ToInstance ToSubclass DisableOverride,Description("The path of the physical device.") : Amended ToSubclass] string Path;
  [key : ToInstance ToSubclass DisableOverride,Description("The name of this property.") : Amended ToSubclass] string Name;
  [Description("The data of this property.") : Amended ToSubclass] string Value;
};

[Description("The ServiceObject Class represents a service object.  The class provides variables and methods that are needed to manage that service object.") : Amended ToSubclass,AMENDMENT, LOCALE(0x409)] 
class ServiceObject
{
  [key : ToInstance ToSubclass DisableOverride,Description("The name of the service object.") : Amended ToSubclass] string Name;
  [key : ToInstance ToSubclass DisableOverride,Description("The POS Device Class that is implemented by the service object.") : Amended ToSubclass] string Type;
  [Description("The version of the UPOS standard the service object is implementing.") : Amended ToSubclass] string UposVersion;
  [Description("Path of the service object’s assembly.") : Amended ToSubclass] string Path;
  [Description("The version number of the service object’s assembly.") : Amended ToSubclass] string Version;
  [Description("The major version of POS for .NET the service object is compatible with.") : Amended ToSubclass] uint32 Compatibility;
  [Description("A short description of the service object.") : Amended ToSubclass] string Description;
  [Description("If TRUE, the service object supports Plug and Play.") : Amended ToSubclass] boolean IsPlugNPlay;
  [Description("If TRUE, the service object is using a legacy (OPOS) service object. If FALSE, the device is using a POS for.NET service object.") : Amended ToSubclass] boolean IsLegacy;
  [Description("Adds a non-Plug and Play device for this service object.") : Amended ToSubclass] void AddDevice([in,Description("Path is the hardware path of the non-Plug and Play device to add.") : Amended ToSubclass] string Path);
  [Description("Deletes a non-Plug and Play device associated with this service object.") : Amended ToSubclass] void DeleteDevice([in,Description("Path is the hardware path of the non-Plug and Play device to delete.") : Amended ToSubclass] string Path);
};
�